package com.sqlcheck.service;

import com.sqlcheck.dto.ai.RuleVerificationRequest;
import com.sqlcheck.entity.ScanResult;

import java.util.List;
import java.util.Map;

/**
 * AI增强验证PROMPT管理器接口
 * 负责统一管理AI增强验证相关的PROMPT模板
 * 
 * @author Claude
 * @version v1.0
 * @since 2025-01-09
 */
public interface AIEnhancementPromptManager {

    /**
     * 构建AI增强验证PROMPT
     * 
     * @param taskId 任务ID
     * @param ruleResults 规则分析结果列表
     * @return 完整的AI验证PROMPT
     */
    String buildVerificationPrompt(Long taskId, List<ScanResult> ruleResults);

    /**
     * 构建AI增强验证PROMPT（基于请求对象）
     * 
     * @param request AI验证请求对象
     * @return 完整的AI验证PROMPT
     */
    String buildVerificationPrompt(RuleVerificationRequest request);

    /**
     * 加载指定的PROMPT模板文件
     * 
     * @param templateName 模板名称
     * @return 模板内容
     */
    String loadTemplate(String templateName);

    /**
     * 渲染PROMPT模板
     * 
     * @param template 模板内容
     * @param variables 变量映射
     * @return 渲染后的PROMPT
     */
    String renderTemplate(String template, Map<String, Object> variables);

    /**
     * 估算PROMPT的token数量
     * 
     * @param prompt PROMPT内容
     * @return 估算的token数量
     */
    int estimateTokenCount(String prompt);

    /**
     * 获取基础PROMPT的token数量（不包含具体SQL内容）
     * 
     * @param taskId 任务ID
     * @param sourceDbType 源数据库类型
     * @param targetDbType 目标数据库类型
     * @return 基础PROMPT的token数量
     */
    int getBasePromptTokens(Long taskId, String sourceDbType, String targetDbType);
}